package com.shjy.client.amap;

import android.content.Context;
import android.content.SharedPreferences;
import android.text.TextUtils;
import android.util.Log;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import com.shjy.client.util.Const;

import java.io.File;
import java.io.RandomAccessFile;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by ld on 2017/6/28.
 */

public class LocationUtil {

    private static final String TAG = "LocationUtil";

    public static Map<String, String> getLocation(final Context context) {

        Map<String, String> resultMap = new HashMap<String, String>();

        // 声明AMapLocationClient类对象
        AMapLocationClient mLocationClient = null;
        // 声明定位回调监听器
        AMapLocationListener mLocationListener = new AMapLocationListener() {
            @Override
            public void onLocationChanged(AMapLocation amapLocation) {
                if (amapLocation != null) {
                    if (amapLocation.getErrorCode() == 0) {
                        // 上传定位信息
                        // updateLocation(amapLocation, context);
                    }
                }
            }
        };
        // 声明AMapLocationClientOption对象
        AMapLocationClientOption mLocationOption = null;

        // 初始化定位
        mLocationClient = new AMapLocationClient(context);
        // 设置定位回调监听
        mLocationClient.setLocationListener(mLocationListener);
        // 初始化AMapLocationClientOption对象
        mLocationOption = new AMapLocationClientOption();
        // 设置定位模式为AMapLocationMode.Hight_Accuracy，高精度模式。
        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        // 获取一次定位结果：
        // 该方法默认为false。
        mLocationOption.setOnceLocation(true);
        // 获取最近3s内精度最高的一次定位结果：
        // 设置setOnceLocationLatest(boolean b)接口为true，启动定位时SDK会返回最近3s内精度最高的一次定位结果。如果设置其为true，setOnceLocation(boolean b)接口也会被设置为true，反之不会，默认为false。
        mLocationOption.setOnceLocationLatest(true);
        // 设置定位间隔,单位毫秒,默认为2000ms，最低1000ms。
        mLocationOption.setInterval(1000);
        // 设置是否返回地址信息（默认返回地址信息）
        mLocationOption.setNeedAddress(true);
        // 单位是毫秒，默认30000毫秒，建议超时时间不要低于8000毫秒。
        mLocationOption.setHttpTimeOut(30000);
        // 关闭缓存机制
        mLocationOption.setLocationCacheEnable(false);
        // 给定位客户端对象设置定位参数
        mLocationClient.setLocationOption(mLocationOption);
        // 启动定位
        mLocationClient.startLocation();
        // 获得定位信息
        AMapLocation amapLocation = mLocationClient.getLastKnownLocation();
        // 定位信息
        if (amapLocation != null) {
            resultMap.put("lat", String.valueOf(amapLocation.getLatitude()));
            resultMap.put("lon", String.valueOf(amapLocation.getLongitude()));
        } else {
            resultMap.put("lat", "");
            resultMap.put("lon", "");
        }
        return resultMap;
    }
}
